/* 
- @electron-toolkit/eslint-config-ts : Electron 工具包提供的 TypeScript 代码检查配置
- @electron-toolkit/eslint-config-prettier : 用于集成 Prettier 代码格式化工具的配置
- eslint-plugin-vue : Vue.js 的 ESLint 插件，提供 Vue 特定的代码检查规则
- vue-eslint-parser : 用于解析 Vue 单文件组件的解析器
*/
import tseslint from '@electron-toolkit/eslint-config-ts'
import eslintConfigPrettier from '@electron-toolkit/eslint-config-prettier'
import eslintPluginVue from 'eslint-plugin-vue'
import vueParser from 'vue-eslint-parser'

export default tseslint.config(
  // 忽略文件配置 : 忽略 node_modules、dist、out 目录下的文件
  { ignores: ['**/node_modules', '**/dist', '**/out'] },
  tseslint.configs.recommended,
  eslintPluginVue.configs['flat/recommended'],
  // Vue 文件特定配置
  {
    files: ['**/*.vue'],
    languageOptions: {
      parser: vueParser,
      parserOptions: {
        ecmaFeatures: {
          jsx: true
        },
        extraFileExtensions: ['.vue'],
        parser: tseslint.parser
      }
    }
  },
  // 自定义规则配置
  {
    files: ['**/*.{ts,mts,tsx,vue}'],
    rules: {
      // 关闭要求组件属性设置默认值的规则
      'vue/require-default-prop': 'off',
      // 关闭要求组件名称为多单词的规则
      'vue/multi-word-component-names': 'off',
      // 强制 Vue 文件的 script 块使用 TypeScript
      'vue/block-lang': [
        'error',
        {
          script: {
            lang: 'ts'
          }
        }
      ],
      // 仅警告未使用的变量
      'no-unused-vars': 'warn',
      // 仅警告未使用的表达式
      'no-unused-expressions': 'warn',
      // 仅警告未使用的函数
      'no-unused-functions': 'warn'
    }
  },
  eslintConfigPrettier
)
